iT邦幫忙

2023 iThome 鐵人賽

DAY 1
0
Software Development

Way to Golang & Kubernetes 系列 第 1

[Day 1.] Kubernetes 前置作業

  • 分享至 

  • xImage
  •  

前言

Kubernetes 是一個自動化部署、管理微服務 (microservices) 的系統,其主要目的在於解決手動管理容器(containers) 的繁瑣程序,希望達成自動化管理容器。
舉個簡易例子,來對應到 Kubernetes 的使用情境: 想像一下,A工程師負責維運的元件極其重要,直接面對客戶端,故若該元件crash down,將致使上千損失,此時 Kubernetes 的 ReplicaSet 則發揮其作用; 與此同時,若此元件要進行版本更新,而又不希望在更新過程中導致使用者得到 404 Error,則 RollingUpdate 在此刻派上用場。

當然以上小小範例還不足以概括 Kubernetes 的精妙之處,但藉由 Kubernetes,如同其官網文檔所言,其特點概述如下:

  • Storage orchestration (儲存方式)
  • Self-healing (自我修復)
  • Load balancing (負載平衡)
  • Automated rollout/ rollbacks (滾動式回復)

具上述優勢,Kubernetes 成為管理容器為人所知的技術,可以發現在許多開源專案上與 Kubernetes 有所關聯,這也是為何以此為主題作為第一次參賽的文章了。

Outline

  • Kubernetes 實際操作: 包含 Kubernetes 核心概念及部分內容,如: Service、Ingress、Role、ClusterRole...等,內容大多基於Udemy課程及官網文件來實作分享。
  • Golang: 過程中需實際閱讀 source code,像是 Kubernetes sample-controller,故 Golang 語法上需加強學習
  • 不定期技術文章分享

Day 1. 入門

首先,要實際操作 Kubernetes,必須先準備好環境,安裝細節詳見官網教學,這邊不多贅述,以下列出兩種方式可以在單機環境中模擬 Kubernetes 操作,也方便後續實作。

  • Minikube
    minikube使用 VM 並建立單個節點(node)的 Kubernetes cluster,適合初學者入門,缺點就是無法新增節點(node)。
# Start cluster
minikube start

# Check status
minikube status

# 查詢 minikube 對外的 ip
minikube ip

## 透過 minikube dashboard 查看 Cluster 狀況
minikube dashboard

# End 
minikube stop

# 刪除 kind cluster
kind delete cluster --name clusterName
  • Kind
    使用 docker 在本機運行 Kubernetes,Kind 會將 docker 的容器當成節點(node)來運行,相較於 MiniKube 使用 VM 來建立節點,Kind 使用 docker,因此 Kind 的啟動速度會比 MiniKube 快上不少。
# 建立 cluster
kind create cluster --name clusterName

# 列出現有 clusters
kind get clusters

# 刪除
kind delete cluster --name clusterName

第一天就壓線了:)

There is only one success - to be able to spend your life in your own way.
共勉之

文章若有什麼需要改進的地方,請不吝賜教


下一篇
[Day 2.] Kubernetes Components
系列文
Way to Golang & Kubernetes 11
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言